Coordinating multiple virtual environments

ABSTRACT

Examples for managing the participation of users in multiple virtual environments are described. An example method includes a processor receiving from a first user device a virtual object that is created by a user and at least one trigger condition for presenting the virtual object, obtaining a physical location of the first user device, and receiving a selection of a first virtual environment for the virtual object from among a plurality of virtual environments associated with the first user device. The method may further include the processor associating the virtual object with the physical location and with the first virtual environment that is selected, and presenting the virtual object to a second user device associated with the first virtual environment when the at least one trigger condition is encountered, where the at least one trigger condition includes a condition that the second user device is proximate to the physical location.

This application is a continuation of U.S. patent application Ser. No.14/807,568, filed Jul. 23, 2015, now U.S. Pat. No. 10,799,792, which isherein incorporated by reference in its entirety.

The present disclosure relates generally to methods and apparatuses formanaging the participation of users in virtual environments, oraugmented reality environments.

BACKGROUND

Large scale virtual worlds exist, such as massive multi-player onlinerole playing games, with millions of users experiencing their ownindividual existences in the same virtual world. Sometimes theseindividual experiences may overlap in the same virtual world, e.g., twoor more users may experience the same aspects within a virtual place ofthe online virtual world at the same time. However, these individualexperiences are limited to the virtual world that is displayed on themonitor or screen of each individual user.

SUMMARY

Examples of the present disclosure disclose methods, computer-readablemedia and apparatuses for managing the participation of users inmultiple virtual environments. In one example, a method includes aprocessor receiving from a first user device a virtual object that iscreated by a user and at least one trigger condition for presenting thevirtual object. The method may further include the processor obtaining aphysical location of the first user device, and receiving a selection ofa first virtual environment for the virtual object, where the firstvirtual environment is selected from among a plurality of virtualenvironments associated with the first user device. In one example, themethod further includes the processor associating the virtual objectwith the physical location and with the first virtual environment thatis selected, and presenting the virtual object to at least a second userdevice associated with the first virtual environment when the at leastone trigger condition is encountered. In one example, the at least onetrigger condition includes a condition that the second user device isproximate to the physical location.

In another example, a computer-readable medium stores instructions that,when executed, cause a processor to perform operations that includereceiving a selection of priorities between a first virtual environmentassociated with a user of a user device and a second virtual environmentassociated with the user, detecting a physical location of the userdevice, providing the physical location to a server, and receivingvirtual objects associated with the physical location. In one example, afirst virtual object of the virtual objects is associated with the firstvirtual environment and a second virtual object of the virtual objectsis associated with the second virtual environment. In one example, theoperations further include displaying at least the first virtual objectbased upon the selection of priorities.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example system related to the present disclosure;

FIG. 2 illustrates an example environment comprising multiple virtualenvironments projected onto a physical environment;

FIG. 3 illustrates an example environment that includes a physicalenvironment and a device for presenting example virtual environments;

FIG. 4 illustrates an example flowchart of a method for associating avirtual object with a location, according to the present disclosure;

FIG. 5 illustrates an example flowchart of a method for associating avirtual object with a location and with a virtual environment that isselected, according to the present disclosure;

FIG. 6 illustrates an example flowchart of a method for displaying atleast one virtual object based upon a selection of priorities betweentwo virtual environments, according to the present disclosure; and

FIG. 7 illustrates an example high-level block diagram of a computingdevice for performing the functions, methods, operations and algorithmsdescribed herein.

To facilitate understanding, identical reference numerals have beenused, where possible, to designate identical elements that are common tothe figures.

DETAILED DESCRIPTION

The present disclosure provides for the management and coordination ofmultiple augmented reality (AR) environments, or “virtual environments,”to immerse a community of users into the same, persistent, online, andinteractive environment augmented over real-life. As used herein, theterm AR environment, broadly, a virtual environment, refers to a set ofimages or sounds that are generated by AR devices and systems of thepresent disclosure and that are presented to users as a supplement toimages and sounds that are generated outside of the devices and systemsof the present disclosure, i.e., in the “real-world.” Thus, the termsaugmented reality (AR) environment and virtual environment may be usedherein to refer to the entire environment experienced by a user,including real-world images and sounds combined with images and soundsof the AR environment/virtual environment. The images and sounds of anAR environment may be referred to as “virtual objects” and may bepresented to users via AR devices and systems of the present disclosure.While the real world may include other machine generated images andsounds, e.g., animated billboards, music played over loudspeakers, andso forth, these images and sounds are considered part of the“real-world,” in addition to natural sounds and sights such as wavescrashing on a beach, the sound of wind through the trees and thecorresponding image of waving tree branches, the sights and sounds ofwildlife, and so on.

In one example, each user of an AR system of the present disclosure,also referred to herein as an online augmented reality (ONAR) system, isequipped with any type of AR device that is able to determine a positionwithin the real world, that enables a human being to experience “virtualobjects” of AR environments, and that is web-connected to handleclient-server and cloud interactions. This can include a mobile deviceor portable computing device, such as a cellular telephone or smartphone, a tablet computing device, networked eyeglasses and headsets withimage and/or sound projection capabilities, and so forth. The term“virtual object” may broadly refer to images, sounds, and even smellsand tastes that are generated by devices and systems of the presentdisclosure. However, for ease of illustration, the present disclosureprimarily describes examples where virtual objects comprise visualimages.

In one example, the present disclosure provides an ONAR system thatkeeps track of one or more AR environments that are overlaid onto thereal world, via users' AR devices. A single user may be a participantin, and associated with various AR environments. The set of usersassociated with each AR environment may be referred to as an ARcommunity. In one example, the present disclosure allows a user toprioritize which AR environment will take precedence over another. Forexample, a user may prefer that an AR environment for the user's familytakes precedence over an architecture AR environment in which the userparticipates. Thus, if the user is at a particular physical location inthe real world, and each of the AR environments has virtual objects atthe same location, the virtual object from the family AR environmentwill be displayed, while the virtual object from the architecture ARenvironment may be hidden or obscured.

In one example, certain AR environments make take precedence over othersregardless of the users' preferences. For example, police or firedepartment messages may be placed in certain locations such that whenusers travel to these physical locations, the users may see certainvirtual objects, e.g., comprising warning messages. For example, afrozen lake may be a popular ice skating location, but a state parksdepartment may place a virtual warning message in an AR environment suchthat users participating in one or more AR communities via the ONARsystem who visit the physical location of the lake will see a warningmessage: “Caution! No skating today due to warm temperatures and thinice.”

In one example, users of the ONAR system may generate their own ARenvironments and define who may be the other participants in the ARenvironment, or the AR community associated with the AR environment. Forexample, a family member may generate an AR environment for a wedding,where all of the wedding guests, and only the wedding guests, areinvited to participate in the AR environment. The creator of an ARenvironment may also define the types of virtual objects that arepermitted and that may be created, who may create virtual objects, andso forth.

The ONAR system may keep track of virtual objects that exist in one ormore AR environments. This may include mapping the locations of thevirtual objects in an AR environment to a real world location, trackingownership or control of virtual objects by different users, monitoringfor trigger conditions for displaying the virtual objects, monitoringfor parameters for modifying or interacting with the virtual objects,and so forth.

In one example, an AR environment is created by using point-to-pointmapping, where virtual objects of the AR environment are associated withphysical locations, e.g., geographic coordinates, street addresses, andthe like, in the real world. In one example, a physical locationassociated with a virtual object may comprise a set of latitude,longitude, and elevation information. In other words, there is aone-to-one correspondence between locations in the real world andlocations within the AR environment. In another example, an ARenvironment may be mapped to different real-world environment types. Forexample, the AR environment may comprise certain virtual objects thatare associated with mountainous regions, such that whenever there is amountainous region in the physical world that is encountered, theassociated virtual objects (e.g., a virtual volcano, a virtualwaterfall, and so on) will be presented. If the user travels to thebeach, other virtual objects (e.g., a virtual pirate ship, a virtualwhale, a virtual leaping dolphin, and so on) associated with a “beach”real-world environment type may be presented, and so forth.

In one example, trigger conditions may be associated with variousvirtual objects. The trigger conditions may comprise inputs or otherconditions which cause the virtual object to become visible or bepresented, where previously hidden. Virtual objects may also haveassociated parameters for interacting with and modifying the virtualobjects. The parameters may define inputs and other conditions uponwhich a virtual object may become mobile, e.g., the user may takecontrol of the virtual object and move the virtual object to anotherlocation, or carry the virtual object with the user, inputs or otherconditions upon which the virtual object may open, e.g., for a virtualbox, the virtual object may make a noise, may transform into a differentshape, color, etc., and so on. In one example, users may create theirown virtual objects and may define the trigger conditions that indicatewhen a virtual object should be displayed and the associated parametersthat indicate how the virtual object may be modified and under whatcircumstances.

The trigger conditions for displaying a virtual object may include atleast a first trigger condition comprising a presence of a users' ARdevice at or near, e.g., proximate to, a physical location correspondingto a location of the virtual object. The trigger conditions may furthercomprise a gesture, sound, or other user input. For instance, the atleast one trigger condition may comprise a first trigger condition thata user's AR device is proximate to the physical location, a secondtrigger condition that the user says “ta-da”, and a third triggercondition that the user wave both hands. In this example, the virtualobject may be displayed when all three trigger conditions are satisfied,e.g., by the user being present at the physical location with the user'sAR device, and by saying “ta-da” while waving the users hands. Thetrigger conditions may further include a time condition, e.g., thevirtual object may only be displayed after a certain time, only duringcertain designated times, and so forth.

The parameters for interacting with a virtual object may be similar tothe trigger conditions for displaying a virtual object insofar as theparameter for interacting with the virtual object may also compriseinputs or other parameters such as: a user moving within a certaindistance of a virtual object (e.g., 10 feet of the virtual object),reaching for or grabbing a virtual object (e.g., making a certainpredefined arm or hand gestures), kicking a virtual object (e.g., makinga certain predefined leg or foot gestures), picking up a virtual object,cutting down a virtual object (e.g., making a certain predefined arm orhand gestures or using various virtual objects such as virtual tools orweapons), shaking a virtual object, and so forth.

In accordance with the above, a trigger condition for displaying avirtual object or a parameter for interacting with a virtual object mayrequire an action by a user, e.g., a user other than the user whocreated the virtual object, in order to make the virtual object visible(in the case of a trigger condition) or to activate a change in thevirtual object (in the case of a parameter). In one example, a user's ARdevice may be equipped to recognize various gestures or movementsassociated with a trigger condition for displaying a virtual object or aparameter for interacting with the virtual object (e.g., gesturerecognition algorithms (broadly image recognition algorithms) or via theuse of various sensors such as motion sensors, light sensors and thelike). For instance, if an AR device is a mobile phone, shaking thevirtual object may be accomplished by standing sufficiently close to thevirtual object (as detected by the location of the mobile phone) andthen shaking the mobile phone from side to side. The mobile phone maydetect such motion via built-in gyroscope and compass technology. Themobile phone or a component of an ONAR system may then determine thatthe motion comprises a specific input gesture that corresponds to aparticular interaction type relating the virtual object. The triggerconditions for displaying virtual objects and the parameters forinteracting with virtual objects may be defined in various waysdepending upon the particular AR device technology utilized anddepending upon the preferences of the user creating the virtual.

In one example, whenever a modification is made to a virtual object inan AR environment in accordance with a parameter, the modification ispropagated to all users who participate in the AR environment (e.g., ifthe other users are within the proximate physical location of thevirtual object or within view of the virtual object, e.g., shaking avirtual tree on a street by a first user can be seen by a second userwalking on the same street, but a third user on a different street notin view of the virtual tree will not see the shaking of the virtualtree). In other words, in one embodiment, certain “transient” dataassociated with the interaction with the virtual object (e.g., thetemporary swaying of the virtual tree due the shaking) can be providedonly to other users who can use transient data. In another example,certain “persistent” data associated with the interaction with thevirtual object (e.g., depositing a virtual item into a virtual box to befound by other users) can be provided to all users whether they areproximate to the virtual object or not.

In one example, the present disclosure provides for procedurallygenerated content. For example, using the real world as a physicalguideline, the first user to explore a physical area that has yet to beaugmented in the AR environment will “transmit” area details (e.g.,images, sounds, etc.) to the ONAR system, which may then generatevirtual terrain, objects, etc., which will then persist for allparticipants of the AR environment who visit the area. These and otheraspects of the present disclosure are discussed below in connection withthe examples of FIGS. 1-6.

To aid in understanding the present disclosure, FIG. 1 illustrates anexample system 100 for managing the participation of users in multiplevirtual environments. In one example, this may include associating avirtual object with a location, associating a virtual object with alocation and with a virtual environment that is selected, and/ordisplaying at least one virtual object based upon a selection ofpriorities between two virtual environments. Although the presentdisclosure is discussed below in the context of a particular system ornetwork architecture, the present disclosure is not so limited. Namely,the present disclosure can be applied to any type of communicationnetwork that is capable of transmitting data, such as a local areanetwork (LAN), a wireless local area network (WLAN), an InternetProtocol (IP) network, such as an Internet Protocol/Multi-Protocol LabelSwitching (IP/MPLS) core network, an IP Multimedia Subsystem (IMS)network, communications over the Internet in general, and so forth.

As shown in FIG. 1, the system 100 connects AR devices 190-193 with oneor more servers via a core network, e.g., an Internet Protocol (IP)network 110, a cellular access network 140, a wireless or wired accessnetwork 150 and/or Internet 180. In one example, cellular access network140 may comprise a radio access network implementing such technologiesas: global system for mobile communication (GSM), e.g., a base stationsubsystem (BSS), or IS-95, a universal mobile telecommunications system(UMTS) network employing wideband code division multiple access (WCDMA),or a CDMA2000 network, among others. In other words, cellular accessnetwork 140 may comprise an access network in accordance with any“second generation” (2G), “third generation” (3G), “fourth generation”(4G), Long Term Evolution (LTE) or any other yet to be developed futurewireless/cellular network technology. While the present disclosure isnot limited to any particular type of cellular access network, in theillustrative example, cellular access network 140 is shown as a UMTSterrestrial radio access network (UTRAN) subsystem. Thus, element 145may comprise a Node B or evolved Node B (eNodeB).

In one example, access network 150 may comprise a non-cellular accessnetwork such as a wireless local area network (WLAN), an IEEE 802.11network, a “wired” access network, e.g., a local area network (LAN), anenterprise network, a metropolitan area network (MAN), a digitalsubscriber line (DSL) network, a cable network, a hybrid networkutilizing a plurality of such technologies, and so forth. Thus, in oneexample, access network 150 may include at least one wirelesscommunication point 155, which may comprise a wireless accesspoint/wireless router, an IEEE 802.11 access point, a ZigBee accesspoint, a Bluetooth or a Bluetooth Low Energy (BLE) beacon, scanner,and/or access point, and so forth. In one example, access network 150may include multiple wireless communication points 155 of differenttypes. Example systems of the present disclosure may include multiplewireless access networks and cellular access network that may beoperated by the same or different parties. Thus, it should be noted thatfor ease of illustration only, a single cellular access network 140 andsingle access network 150 are shown in FIG. 1.

In one example, core IP network 110 comprises a telecommunicationnetwork service provider network with network devices or elements (notshown) which are capable of routing and forwarding IP packets betweendifferent hosts over the network. However, in one example, thecomponents of core IP network 110 may have additional functions, e.g.,for functioning as a public land mobile network (PLMN)-General PacketRadio Service (GPRS) core network, for providing Voice over InternetProtocol (VoIP), Service over Internet Protocol (SoIP), and so forth,and/or may utilize various different technologies, e.g., AsynchronousTransfer Mode (ATM), Frame Relay, multi-protocol label switching (MPLS),and so forth. Thus, it should be noted that although core IP network 110is described as an Internet Protocol network, this does not imply thatthe functions are limited to IP functions, or that the functions arelimited to any particular network layer.

In one example, AR devices 190-193 may each comprise any portableendpoint device configured for wireless communication and for thedisplay of images, such as: headset with an image screen or projector, alaptop computer, a Wi-Fi device, a Personal Digital Assistant (PDA), amobile phone, a smartphone, an email device, a computing tablet, amessaging device, and the like. As illustrated in FIG. 1, AR devices 190and 191 comprise AR headsets, while AR devices 192 and 193 may comprisecellular or cellular/Wi-Fi capable smart phones or computing tablets. Inone example, AR devices 190-193 may have both cellular and non-cellularaccess capabilities and may further have wired communication/networkingcapabilities. In one example, each of AR devices 190-193 may also beconfigured to output sound, to accept sound input, to sense certainolfactory molecules and/or to output certain scents, and so forth.

In one example, each of AR devices 190-193 may also be capable ofdetermining a location. For instance, any one or more of AR devices190-193 may be equipped with a global positioning system (GPS)component, or may be configured to determine a location viatriangulation or other technique using measured distances between the ARdevice and one or more access points or base stations. In one example, anear-field communication (NFC) capability can be used to establish thephysical proximity of an AR device to a sensor or beacon. For example,one of access points 155 may comprise a BLE beacon. If AR device 190 isBluetooth enabled and is sufficiently close to the one of the accesspoints 155, the location of AR device 190 may be accurately determinedto be within a few meters (provided the location of the access point isknown). In one example, each of AR devices 190-193 may calculate adevice location directly, via local measurements on the device, or mayreceive location information from a centralized system component, e.g.,an application server, as described below.

In accordance with the present disclosure, AR devices 190-193 may eachrun an AR application, or “local application,” which enables the ARdevices 190-193 to interact with an application server (AS) (e.g., anyone or more of AS 120 and AS 125) for presenting one or more ARenvironments to users of AR devices 190-193, for enabling the user of ARdevices 190-193 to interact with virtual objects of one or more ARenvironments, and for generating new virtual objects to be associatedwith one of the AR environments. In particular, in one example, thelocal application provides one or more of AR devices 190-193 with theability to generate a new virtual object, to provide trigger conditionsfor displaying the the virtual object, to provide parameters forinteracting with the virtual object, to associate the virtual objectwith one of a plurality of different AR environments that is selected,and to convey such information to an application server. The localapplication may also provide one or more of AR devices 190-193 with theability to provide location information of the AR device to theapplication server, and/or to receive location information of the ARdevice from the application server, to receive location information ofone or more virtual objects from the application server, and to displayvirtual objects on a screen of the AR device, via a projector of the ARdevice, and so forth.

In one example, the telecommunication network service provider maymaintain an application server (AS) 120 in the core IP network 110 forproviding ONAR services, such as: generating virtual objects,associating virtual objects with physical locations and/or real-worldenvironment types, presenting at least one virtual object based upon aselection of priorities between two or more virtual environments,determining locations of AR devices, and communicating with AR devicesin connection with the abovementioned functions. Alternatively, thenetwork service provider (e.g., the owner and/or operator of core IPnetwork 110) may maintain AS 120 on behalf of an ONAR service provider,or on behalf of a plurality of ONAR service providers. In this regard,the application server 120 may also include a database (DB) 121 forstoring information and data relating to ONAR services. In one example,AS 120 may comprise a hardware server or computer such as illustratedand described in connection with FIG. 7, and the database 121 may be anytype of electronic collection of data stored on a computer-readablemedium, e.g., a hardware storage device. In addition, although AS 120 isillustrated as a single device, in one example, AS 120 may comprise aplurality of physical devices co-located or distributed in severalphysical locations, e.g., connected through a virtual private network(VPN), a permanent virtual circuit (PVC) (in the case where core IPnetwork 110 may also include non-IP aspects), and the like.

In still another example, an application server, e.g., AS 125, may bemaintained “in the cloud,” i.e., reachable via the Internet 180 ingeneral. In one example, AS 125 is maintained by an ONAR serviceprovider, or is maintained by another entity and performs operationscontrolled by the ONAR service provider or by the other entity, e.g., acloud service provider. In one example, AS 125 may comprise a hardwareserver or computer such as illustrated and described in connection withFIG. 7, and the database 126 may be any type of electronic collection ofdata stored on a computer-readable medium, e.g., a hardware storagedevice. Accordingly, AS 125 may provide the same or substantiallysimilar functions as AS 120, as described herein. Like AS 120, AS 125may also comprise a plurality of servers co-located or distributed inseveral physical locations. In addition, it should be noted that thesystem 100 may be implemented in a different form than that illustratedin FIG. 1, or may be expanded by including additional endpointdevices/AR devices, access networks, network elements, applicationservers, etc. without altering the scope of the present disclosure.

FIG. 2 illustrates an example environment 200 that includes areal-world, physical environment and two AR environments. For instance,environment 200 may represent the experience of a first user 201 who isa member of two different AR communities. The first AR community may bean architecture AR community for users such as architects, landscapedesigners, and the like, and for those who are interested in the worksof such users. The second AR community may be a family-based ARcommunity for the family of first user 201. As illustrated in FIG. 2,the physical environment may include roads 210 and 215, car 220, andhouses 230, 235, and 238. In the example of FIG. 2, house 238 maycomprises the home of first user 201, while houses 230 and 235 may beneighbors' homes. Each AR environment may comprise one or more virtualobjects. For example, the architecture AR environment may includeseveral virtual objects, such as trees 240 and walkway 270. Forinstance, house 230 may be for sale and a second user 205, e.g., anarchitect or landscaper, may wish to share a vision of the house 230with some improvements. Therefore, a brick walkway 270, e.g., a firstvirtual object, on the front yard of house 230 and several trees 240,e.g., additional virtual objects, may be added to the architecture ARenvironment to allow others to imagine what the area might look likewith some improvements, and to showcase some of the creative talents ofsecond user 205. Second user 205 is depicted as being located near house230 to illustrate that in one example, a user associates a virtualobject with a location by being physically present at the location.

The family-based AR environment may include a virtual object, e.g., adragon 260, placed in front of a neighbor's house, e.g., house 235. Forexample, the first user 201 may create and place the dragon 260 to“defend” house 235 and to remind the children of first user 201 thatthey should not cut across the neighbor's property. First user 201 mayalso place a second dragon 265 in front of house 230 for a similarpurpose.

The first user 201 may also place a virtual object, e.g., a treasurechest 290, within the family-based AR environment. For example, treasurechest 290 may be placed in a park 280 that is located across the streetfrom the house 238 of the first user 201. As mentioned above, a user maycreate a virtual object, “place” the virtual object at a location, i.e.,associate the virtual object with the physical location, and may definevarious trigger conditions with respect to the presentation of virtualobject and/or define various parameters associated with manipulating andinteracting with the virtual object. For example, the treasure chest 290may initially be “hidden” as indicated at 290A. The first user 201 maydefine a trigger condition as a user of the family-based AR communitymoving within a certain distance of the location of the treasure chest290, and may define that the treasure chest 290 should become visiblewhen the trigger condition is satisfied. For instance, the child 202 ofthe first user 201 may walk through the park 280 and approach thephysical location associated with the hidden treasure chest 290, atwhich time the treasure chest may transform from hidden, e.g., 290A, tobeing visible as indicated by 290B.

The first user 201 may also define parameters for interacting with thetreasure chest 290. For example, a parameter may comprise receiving ofan input comprising a key-turning motion detected on an AR device at thephysical location of the treasure chest 290, upon which the treasurechest 290 is to transition from “visible and closed,” e.g., asillustrated by 290B, to “visible and open,” e.g., as illustrated by290C. For instance, if an AR device of child 202 is a mobile phone,“opening” the treasure chest 290 may be accomplished by standingsufficiently close to the treasure chest 290 (as detected by thelocation of the mobile phone) and then turning the mobile phone as ifrotating a knob or a large key.

In one example, whenever a modification is made to a virtual object inan AR environment, the modification is propagated to all users whoparticipate in the AR community associated with the AR environment.Thus, for example, when child 202 causes the treasure chest 290 tobecome visible (290B), the treasure chest 290 will from then on bevisible to all users in the family-based AR community who approach thelocation of the treasure chest 290, including the first user 201 whocreated the treasure chest 290. Other users who are participants inother AR communities will not see the treasure chest 290. For example,second user 205 will not see the treasure chest 290.

The trigger conditions for displaying a virtual object and theparameters for interacting with the virtual object may be defined invarious ways depending upon the particular AR device technology utilizedand depending upon the preferences of the user creating the virtualobject. For example, if the AR device of child 202 comprises an ARheadset, the movement of the hands of child 202 may be detected via acamera of the AR headset and correlated to a gesture or movement thatmay comprises a parameter for interacting with the virtual object. Whentreasure chest 290 is “opened,” it will from then on be visible as open,in the form of 290C, to all users participating in the family-based ARenvironment.

The family-based AR environment may also include other virtual objects,such as a bridge 250 and a satellite 255, which may be created andplaced by child 202 in the locations depicted in environment 200. Child202 may also place a welcome home sign 295 as a virtual object overhouse 238. For example, the first user 201, the parent of child 202, maybe returning home from a trip and the child 202 may want to surprise theparent, first user 201, with a large “welcome home” sign. The welcomehome sign 295 will be visible to all participants of the family-based ARenvironment, but will not be seen by other users in other ARenvironments, e.g., second user 205. Conversely, participants in thearchitecture AR environment will see virtual objects of the architectureAR environment, while other users will not. Thus, for instance, firstuser 201 and second user 205 will see the trees 240 and walkway 270,while child 202, who is not a participant in the architecture ARcommunity, may not see these virtual objects.

As mentioned above, one aspect of the present disclosure is the abilityof a user to prioritize between different AR environments in which theuser is a participant. Thus, for example, first user 201 may selectwhich AR environment should be visible, from among the different ARenvironments in which the first user 201 participates. For instance,first user 201 may select to have the family-based AR environmentvisible, while the architecture AR environment is to be hidden. Thus, ifthe first user 201 is walking through the environment 200, the firstuser 201 may see dragon 260, second dragon 265, treasure chest 290,bridge 250, satellite 255, and welcome home sign 295, while trees 240and walkway 270 will not be displayed by the AR device of the first user201. At some other time, the first user 201 may change the selection,such that the virtual objects of the architecture AR environment arevisible (e.g., those virtual objects whose trigger conditions may havebeen satisfied), while the family-based AR environment and all of itsvirtual objects are hidden. In still another example, the first user 201may select to have more than one AR environment visible at the sametime. For instance, both the family-based AR environment and thearchitecture based AR environment may be visible as the user 201transits through environment 200 (e.g., including those virtual objectsfrom the family-based AR environment whose trigger conditions have beensatisfied and those virtual objects from the architecture based ARenvironment whose trigger conditions have been satisfied). Additional ARenvironments may also be displayed at the same time, or hidden,according to the preferences of user 201.

As also mentioned above, a user may prioritize between different ARenvironments that are simultaneously visible when there is a conflictbetween virtual objects of the different AR environments in the samelocation. For example, user 201 may have placed a second dragon 265 infront of the house 230 in the family-based AR environment, but thesecond dragon 265 would interfere with the walkway 270 placed by thesecond user 205 in the architecture AR environment. User 201 may haveselected to have both AR environments visible, but to have thearchitecture AR environment take precedence. Therefore, the seconddragon 265 of the family-based AR environment may be hidden so thatwalkway 270 is fully visible. In one example, an indicator, such as asmall blinking light may be presented in the location next to or nearthe virtual object that is displayed to indicate that another virtualobject for a different AR environment is available, but hidden. Inanother example, the virtual object of the AR environment with a lowerpriority or precedence may still be made visible, but may be made faded,transparent, or shown in outline form, or may be shown in black andwhite, instead of color, and so forth. For example, in FIG. 2 the seconddragon 265 is illustrated as transparent with respect to walkway 270.

Continuing with the same example, FIG. 3 illustrates an environment 300that includes a physical environment 310 and a device 320, e.g., an ARdevice, for presenting AR environments on a display screen 325. In thepresent example, the display screen presents images from physicalenvironment 310 combined with virtual objects from the family-based ARenvironment and the architecture AR environments in which the first user201 of FIG. 2 participates. For example, device 320 may comprise an ARdevice of the first user 201 of FIG. 2. The images of the physicalenvironment 310 and the virtual objects on display screen 325 maycorrespond to the same images and virtual objects that appear in FIG. 2.For example, real world environment 310 may include house 230 and road215, which are the same as shown in FIG. 2. The first user 201 may bestanding across the road 215 from house 230 and be looking in thedirection of house 230 in FIG. 2. As shown in FIG. 3, in the physicalenvironment 310, road 215 and house 230 are visible. For instance, arear-facing camera on the device 320 may be pointed in the direction ofhouse 230 and may capture the image(s) of physical environment 310 asshown.

In the present example, the first user 201 may have selected to haveboth the family-based AR environment and the architecture AR environmentpresented simultaneously, with the architecture AR environment takingprecedence. Thus, on the display screen 325, the images of physicalenvironment 310 are shown, i.e., the house 230 and road 215. Inaddition, the walkway 270 and trees 240 of the architecture ARenvironment that are within the field of view are also presented ondisplay screen 325. The second dragon 265 of the family-based ARenvironment is also presented on display screen 325. However, the seconddragon 265 may be presented in a transparent or faded form, according tothe preferences of the first user 201. In another example, the seconddragon 265 may not be presented at all, if the architecture ARenvironment is selected to have precedence.

It should be noted that the examples of FIGS. 2 and 3 are provided forillustrative purposes. Thus, in accordance with the present disclosure,a variety of different types of AR environments and virtual objects maybe provided which are different from those depicted in FIGS. 2 and 3. Inaddition, a variety of different types of AR devices in a different formthan that illustrated in FIG. 3 may be utilized without altering thescope of the present disclosure. For example, FIG. 3 illustrates an ARdevice 320 capturing and displaying real world images on display screen325. However, in another example an AR device may simply present virtualobjects in the form of visible images to a user, where real-world imagesare received by the user's eyes without any intermediation by an ARdevice, or any other device. For instance, images may be displayed by aprojector of an AR headset.

It should also be noted that in various examples, the AR devices of thevarious users in FIG. 2 may be interacting with one or more servers forreceiving and/or reporting location information, for receiving datapertaining to virtual objects, and their trigger conditions andparameters, for reporting inputs via the AR devices, and so forth.

FIG. 4 illustrates an example flowchart of a method 400 for associatinga virtual object with a location. In one example, the steps, operations,or functions of the method 400 may be performed by AS 120 or AS 125 ofFIG. 1, e.g., an ONAR server. Alternatively, one or more steps,operations, or functions of the method 400 may be implemented by acomputing device having a processor, a memory, and input/output devicesas illustrated in FIG. 7 and described below, specifically programmed toperform the steps, functions, and/or operations of the method. Forillustrative purposes, the method 400 will now be described in terms ofan example where operations of the method are performed by a processor,such as processor 702 of FIG. 7.

The method 400 begins in step 405 and proceeds to step 410. In step 410,the processor receives a request to create an AR environment, e.g., avirtual environment. In one example, the request is received from adevice of a first user. In one example, the device of the first user maycomprise an AR device. Alternatively, or in addition, the device of thefirst user may comprise a desktop computer, a laptop computer, aportable computing device, and so forth. In one example, the request mayinclude a title of the AR environment, a duration of the AR environment,a theme of the AR environment, and a geographic boundary of the ARenvironment, and/or other features.

The duration of the AR environment may relate to how long the ARenvironment should persist. For example, the first user may select thatthe AR environment should end and no longer be available after threeweeks, three months, six months, or any other duration of time. In oneexample, the theme of the virtual environment may be selected by theuser, such as a family-based theme, an architecture based theme, and soforth. For instance, the user may select from a number of preexistingthemes, or may create an entirely new theme. In one example, thegeographic boundary of the AR environment may correspond to “real-world”physical geography. For example, the first user may be a parent creatinga family-based AR environment, and the first user may not want thechildren to wander outside of the immediate neighborhood of the family'shouse. In one example, the geographic boundary may be selected byindicating a maximum radius from a current location of the first user,or from another selected location. In another example, the geographicboundary may be selected by presenting the first user with a map, wherethe user may define a closed shape, using any of the roads or othergeographic features, such as a river, an ocean, etc., as a border of theclosed shape.

At step 420, the processor receives conditions to determine a communityof users to be associated with the virtual environment. In one example,the conditions may be received as part of the request received at step410. In another example, the processor may prompt the first user toselect particular users who are permitted to participate in the ARenvironment. For instance, the first user may select only the familymembers of the first user to join the community associated with afamily-based AR environment to be created by the first user. In anotherexample, the first user may define rules that the processor may use todetermine who is permitted to join the community. For instance, thefirst user may be creating an architecture related AR environment andmay want to restrict joining to only users who are over 18 years of age.For example, the first user may wish to avoid adolescents creating“graffiti” by placing visual objects that detract from the ARenvironment, rather than those that would benefit the AR environment byenhancing the real-world environment with interesting and attractivestructures.

It should be noted that where the present disclosure describesinteractions between a processor or other device, and a user or a userdevice, the interactions may comprise various different types of wiredand/or wireless communication between devices over a network. As justone example, the processor may transmit an extensible markup language(XML) file via transmission control protocol/internet protocol (TCP/IP)to the user device via one or more networks, where the XML file maycause an application on the user device to display an interactive form,e.g., with one or more fields for the user to complete and return to theprocessor.

At step 430, the processor receives data from a user device regarding alocation, i.e., a real-world, physical location. The device may be asame device from which the request to create the virtual environment isreceived at step 410, or a different device. For example, the first usermay submit the request to create the virtual environment using a desktopcomputer, while the data regarding the physical location may be sentfrom a mobile, wireless communication-capable AR device. In one example,the user device may be a device of a different user than the first user.In one example, the user device may transmit information regarding thesurrounding of the user device, such as by transmitting a video feed, ora series of one or more pictures captured by the user device. In oneexample, the data regarding the physical location may include GPSlocation information of the user device, e.g., GPS coordinates. Inanother example, the data regarding the physical location may includesignal strength information from a plurality of nearby cellular basestations, e.g., to permit the processor or other network-based componentto determine the location of the user device via triangulation, or usingsimilar techniques.

At step 440, the processor generates at least one virtual object in theAR environment associated with the physical location. For example, theprocessor may pre-populate the AR environment with one or more virtualobjects, e.g., based upon the theme that is selected. For example, theprocessor may place virtual objects comprising bushes and flowers atvarious locations within the AR environment when the AR environment isan architecture themed AR environment. In other words, in one example, adevice of a first user who is a participant in the AR environment andwho travels to a particular real-world location is tasked with gatheringvisual and other data of the location and transmitting the dataregarding the location to the processor. In turn, the processor maygenerate virtual objects and place the virtual objects accordingly. Forinstance, the processor will not place a virtual object comprising a newtree in the middle of a road. Similarly, the processor will not placesuch a virtual object on top of an existing tree. Thus, using cues fromthe real-world physical environment at the location, the processor mayplace a virtual object where it does not conflict with features of thephysical environment.

The processor may receive similar data regarding other physicallocations from the same user device and/or from other user devices asthese devices traverse the physical environment. In this way, theprocessor may generate a more interesting AR environment for the users,e.g., for when the AR environment is first being developed, and beforethe users have had the opportunity to generate and place manyuser-created virtual objects throughout the AR environment.

Following step 440, the method 400 proceeds to step 495 where the methodends.

FIG. 5 illustrates a flowchart of an example method 500 for associatinga virtual object with a location and with a virtual environment that isselected. In one example, the steps, operations, or functions of themethod 500 may be performed by AS 120 or AS 125 of FIG. 1, e.g., an ONARserver. Alternatively, one or more steps, operations, or functions ofthe method 500 may be implemented by a computing device having aprocessor, a memory, and input/output devices as illustrated in FIG. 7and described below, specifically programmed to perform the steps,functions, and/or operations of the method. For illustrative purposes,the method 500 will now be described in terms of an example whereoperations of the method are performed by a processor, such as processor702 of FIG. 7.

The method 500 begins in step 505 and proceeds to step 510. In step 510,the processor receives from a first user device at least oneuser-created virtual object and at least one trigger conditionassociated with the virtual object. In one example, the at least onevirtual object that is received may comprise one or more images that arecreated by a first user or selected by the first user from a set of oneor more predefined images. The one or more images may be static, or maycomprise moving images or animations.

In one example, the at least one trigger condition may comprise acondition for displaying the at least one virtual object. In oneexample, the at least one trigger condition includes a trigger conditionthat a user device is proximate to a physical location associated withthe user device. For example, the first user may create a hiddentreasure chest. In addition, the first user may define a triggercondition that the treasure chest should appear if a user device, e.g.,an AR device, of a different user is within three meters of the virtualobject. In another example, the first user may define the at least onetrigger condition to comprise that the at least one virtual object, suchas a treasure chest, should appear when there are at least two userdevices within three meters of the at least one virtual object at thesame time. In another example, the first user may define the at leastone trigger condition to comprise that the at least one virtual objectshould appear when the 100^(th) user device approaches within threemeters of the virtual object. For example, the first user may want tohave every 100^(th) visitor to a particular location to be a “winner.”In still another example, the at least one trigger condition may bedefined by the first user such that the at least one virtual objectshould appear at a certain time, or at certain times. In one example,the at least one trigger condition may further specify a duration forwhich the at least one virtual object should appear. For example, the atleast one trigger condition may specify that the at least one virtualobject should appear at the top of every hour for a five minute timeperiod, and then disappear until the top of the next hour. For instance,the at least one virtual object may be a virtual “cuckoo clock.”

At step 515, the processor receives at least one parameter forinteracting with the at least one virtual object. In one example, the atleast one parameter may be received from the first user device in a samecommunication as the at least one virtual object and the at least onetrigger condition. The at least one parameter may be associated with atleast one alteration or transformation of the virtual object in responseto the at least one parameter. For example, the first user may createthe at least one virtual object such that the at least one virtualobject can be transformed in a number of different ways. For instance,the at least one virtual object may comprise a treasure chest. The atleast one virtual object, e.g., the treasure chest, may have severaldifferent states, such as a hidden state, a closed state, and an openstate. As mentioned above, a trigger condition may comprise a userdevice approaching within a certain distance of the treasure chest, uponwhich the treasure chest will appear. Thus, the treasure chest maytransition from the hidden state to the closed state, where the treasurechest is visible, but closed such that any contents of the treasurechest still cannot be seen. However, when a parameter for interactingwith the treasure chest is met, the processor may cause the treasurechest to “open,” e.g., to transition from the closed state to the openstate. In the open state the treasure chest and its contents may bevisible. Thus, for example, the least one virtual object may notcomprise a static image, but may comprise a set of one or more images,one or more trigger conditions, one or more parameters for interactingwith the virtual object, and so forth.

In one example, the at least one parameter may comprise a presence of auser device within a proximity of the at least one virtual object. Inone example, the at least one parameter may further include a timeparameter. For instance, the virtual object may be defined to be staticfor 30 minutes of every hour, where no interactions are permitted, andnon-static for 30 minutes of every hour, where the at least one virtualobject may be changed, moved, and so forth. In one example, the at leastone parameter may comprise a gesture or series of gestures, which, whenperformed by a user, result in a manipulation of the at least onevirtual object. For instance, a user device may record that the user ismaking a turning motion with his or her hand. This turning motion maycomprise a parameter for causing a treasure chest virtual object totransition from “closed” to “open,” e.g., the gesture simulating theuser turning a key and opening a lock.

In still another example, the at least one parameter may comprise aninput on a user device. For instance, the at least one virtual objectmay comprise a wrapped gift package where defined interactions that arepermitted with the virtual object include “shaking” the package and“opening” the package. If the user device comprises a smartphone, theuser may shake the smartphone from side to side. This input may bereceived and correspond to the parameter which may result in the atleast one virtual object appearing to shake. In one example, a sound mayaccompany the visual shaking. For instance, the first user may record asound to be associated with the shaking motion of the at least onevirtual object.

The foregoing are only a few examples of the types of trigger conditionsand parameters that may be defined in association with a virtual object.Thus, various other trigger conditions and parameters may be implementedin accordance with the present disclosure based upon the preferences ofthe first user creating/defining the at least one virtual object,depending upon the type(s) of AR devices of the users and theircapabilities, and so forth. In addition, it should be noted that theprocessor may receive data from the user device pertaining to the deviceusage, and analyze the device usage to determine whether any keypad ortouchscreen inputs, voice commands, gestures or other motions made withthe device correspond to one of the trigger conditions or parameters. Ifa trigger condition or parameter is met, the processor may then sendfurther instructions to the user device to cause the correspondingdisplay and/or change in the at least one virtual object to be performedon the user device.

At step 520, the processor obtains a physical location of a user deviceof the first user. For example, an AR device of the first user maydetermine its location via a GPS receiver, base station triangulation,or other means, and report the location, e.g., coordinate information,to the processor. In another example, network-based components mayreceive communications from the user device, from which the location ofthe user device may be determined. For instance, one or morenetwork-based components may use triangulation techniques to determine alocation of the user device based upon a received signal strength at oneor more base stations, and so forth. The processor may perform thelocation determination, or the location determination may be made by oneor more other network-based components, which forward to the processorthe location that is determined.

At step 525, the processor receives a selection from among a pluralityof virtual environments of a virtual environment in which the at leastone virtual object is to be located. In one example, the selection maybe received from the user device of the first user. For instance, thefirst user may participate in a number of different virtual environments(AR environments). Therefore, the first user creating the at least onevirtual object may be required by the processor to clarify which virtualenvironment should receive the at least one virtual object. Forinstance, the processor may receive a selection that indicates that theat least one virtual object is for a family-based virtual environment,rather than a different virtual environment in which the first user is aparticipant.

At step 530, the processor associates the at least one virtual objectwith the physical location and with the virtual environment that isselected. As mentioned above, in one example, there is a one-to-onecorrespondence between physical locations in the real-world andlocations within the virtual environment. Thus, in one example, thefirst user may go to the physical location in order to “place” the atleast one virtual object in this location, e.g., to associate thevirtual object with the physical location. However, in another example,the first user may place a virtual object at any location, withouthaving to actually travel to the corresponding physical location withthe first user's AR device. For instance, the processor may present thefirst user with a map corresponding to the real-world physical locationsupon which the user may select a location to place the virtual object.

At step 535, the processor determines whether the at least one triggercondition for the at least one virtual object is encountered. Forexample, if the at least one trigger condition comprises a user devicecoming within a certain threshold distance from the location of the atleast one virtual object, the processor may detect that the at least onetrigger condition is satisfied when a location of a user device of asecond user is detected as being within the threshold distance. Inanother example, the at least one trigger condition may comprise a userdevice being within a certain distance of the virtual object and takingsome additional action, such as making a particular gesture or speakinga particular command. In still another example, the at least one triggercondition may comprise at least one user device being within a certaindistance of the virtual object and a time condition. For example, whenthe processor detects that time has advanced to the particular time andat least one user device is proximate to the physical location, theprocessor may therefore determine that the at least one triggercondition has been encountered. If the processor does not detect thatthe at least one trigger condition is encountered, the processorcontinues to wait at step 535 and check if the at least one triggercondition is encountered at a subsequent time. When the at least onetrigger condition is encountered, the method proceeds to step 540.

At step 540, the processor presents the at least one virtual object toone or more user devices associated with the virtual environment thatare proximate (e.g., within a certain distance of the physical location,e.g., within 3 feet, 5 feet, 10 feet, 15 feet, or 20 feet and so on) thephysical location, e.g., user devices of users who participate in thevirtual environment. Thus, in one example, step 540 comprises theprocessor presenting the at least one virtual object to at least asecond user device associated with the virtual environment that isproximate or present at the physical location. In one example, the atleast a second user device may be a user device that caused the at leastone trigger condition to be satisfied, e.g., due to the proximity of theuser device to the physical location, and possibly due to satisfying oneor more additional trigger conditions.

In one example, the presenting the virtual object to the one or moreuser devices comprises transmitting the virtual object to the one ormore user devices for presentation via respective displays, speakers,and other output modalities of the respective user devices. Notably, inone example, the at least one virtual object is not just presented to auser device of a user that has caused the at least one trigger conditionto be encountered (and which is therefore already determined to be atthe physical location), but may be presented to all user devices thatparticipate in the virtual environment and that are near enough to seethe physical location corresponding to the location of the at least onevirtual object. The locations of the user devices may be determined inthe same or a similar manner as described above in connection with step520 for determining the location of the user device of the first user.In one example, the size of the at least one virtual object may bescaled for different user devices depending upon the respectivedistances from the location of the at least one virtual object. In oneexample, the scaling may be performed by the processor based upon acalculation of the distances between the user devices and the locationof the at least one virtual object. However, in another example, thescaling may be performed by each user device in a similar manner.

At step 545, the processor receives an input from a user device of aparticipant of the virtual environment that is at the physical location,e.g., a user device of a participant that caused the at least onetrigger condition to be satisfied or a user device of anotherparticipant, where the input is for interacting with the at least onevirtual object. In one example, the input may be in accordance with theat least one parameter for interacting with the virtual object that isreceived at step 515. For instance, as mentioned above, the first usermay define a parameter for interacting with a treasure chest virtualobject to comprise a turning motion made via a user device, which maycause the treasure chest to open, as if the user has turned a key in torelease a lock. Thus, the processor may receive an input from the userdevice of a second user that indicates that the user device is beingrotated. In still another example, step 545 may comprise receivinginputs from at least two user devices. For instance, a parameter forinteracting with a virtual object may comprise coordinated inputs from auser device of a second user and a user device of at least a third user.

At step 550, the processor alters the at least one virtual object inaccordance with the input. For instance, if the input is a turningmotion corresponding to a parameter for opening a treasure chest virtualobject, the processor may cause the presentation of the image of thetreasure chest to change from closed to open. In another example, theinput may comprise a shaking of the user device of the second user,which may correspond to a parameter for causing a gift package virtualobject to shake and/or make a rattling noise. As such, at step 550, theprocessor may cause the gift package to change from a static image to ashaking animation, and may alternatively or additionally cause the userdevice of the second user to play the rattling sound. In one example,the at least one virtual object is altered as it is displayed and/orotherwise presented on the user device of the second user. In oneexample, the at least one virtual object is altered as it is displayedand/or otherwise presented on the user device of the second user and theuser device of at least a third user, e.g., where the parameter issatisfied by coordinated inputs from at least two user devices. Notably,in one example, the processor may also alter the at least one virtualobject insofar as it is presented via the user devices of other users inthe community that are at or near the location of the at least onevirtual object. For instance, if other users and their user devices arewithin 10 meters of the virtual object, the processor may cause theother user devices to present the alteration of the virtual object,e.g., by animating the virtual object, presenting the same audio that ispresented to the second user via his or her user device, and so forth.

In one example, the alteration may comprise the at least one virtualobject becoming mobile. For instance, the parameter may comprise aninput from a user device to “pick up” the at least one virtual object,such as pressing a key, entering a code, making a particular gesture, orspeaking a particular command, upon which the at least virtual objectmay move within the virtual environment as the second user move withinthe real-world physical environment. Thus, the second user may see thatthe at least one virtual object appears to be moving along with thesecond user as the second user changes perspectives and moves throughoutthe real-world. Other users may also see, via their respective userdevices, that the at least one virtual object is moving with the seconduser and the second user's mobile device.

In still another example, the input may comprise a swinging motion, achopping motion, or a smashing motion, which may cause a virtual objectto appear to be destroyed. For example, a tree virtual object may be cutdown, a porcelain virtual object may be shattered, and so forth via suchinputs. Again, the permitted and possible types of alterations and thechanges of the at least one virtual object from one state to another maybe controlled by first user according to the information received by theprocessor at steps 510-525.

At step 555, the processor stores the at least one virtual object in astorage device. For example, the processor may store the at least onevirtual object and any associated data, such as one or more image,video, sound, and/or animation files corresponding to different statesof the at least virtual object, trigger conditions, parameters forinteracting with the at least one virtual object, and so forth in amemory, such as a read-only memory (ROM), a magnetic or optical drive, adiskette, and the like. In one example, the storage device may comprisea single physical device. However, in another example, the storagedevice may comprise a plurality of physical devices co-located inproximity to one another, or distributed at a plurality of differentsites.

At step 560, the processor determines whether an end condition isdetected. For instance, the first user may define a condition for endingthe virtual object, upon which the virtual object may no longer bediscovered or presented to other user devices. In one example, the endcondition may be received in step 510 or step 515, and may be stored atstep 555 along with the at least one virtual object and other associateddata. The end condition may comprise, for example, one of the parametersfor interacting with the virtual object. For instance, a cutting motionfor chopping down a tree virtual object may not only cause the tree toappear to be cut down, but may also result in the tree virtual objectbeing removed entirely from the virtual environment if the cutting downof the tree is also an end condition.

When an end condition is detected at step 560, the method 500 proceedsto step 595 where the method ends. Otherwise, the method 500 proceeds tostep 565.

At step 565, the processor determines whether a user device associatedwith the virtual environment is detected at the physical location, i.e.,a user device of a user in the community associated with the virtualenvironment. For example, step 565 may comprise similar operations tothose described above in connection with steps 520 and 540. When a userdevice is not detected at the physical location, the method 500 returnsto step 555. When a user device is detected at the physical location,the method 500 proceeds to step 570.

At step 570, the processor retrieves the virtual object from the storagedevice. For instance, the processor may access a memory and retrieve afile comprising the virtual object and associated data.

At step 575, the processor presents the virtual object to the userdevice. For instance, all or a portion of the virtual object andassociated data may be transmitted by the processor to the user deviceto cause the user device to present the virtual object to the associateduser. Following step 575, the method 500 returns to step 555. When step560 is reached, it is again determined whether an end condition isencountered. When no end condition is encountered, the method 500continues with steps 565, etc. However, as mentioned above, when the endcondition is encountered, the method 500 proceeds to step 595 where themethod ends.

To further illustrate examples of the present disclose, FIG. 6illustrates a flowchart of an example method 600 for displaying at leastone virtual object based upon a selection of priorities between twovirtual environments. In one example, the steps, operations, orfunctions of the method 600 may be performed by any one of the ARdevices 190-193 of FIG. 1, or by the AR device 320 of FIG. 3.Alternatively, one or more steps, operations, or functions of the method600 may be implemented by a computing device having a processor, amemory, and input/output devices as illustrated in FIG. 7 and describedbelow, specifically programmed to perform the steps, functions, and/oroperations of the method. For illustrative purposes, the method 600 willnow be described in terms of an example where operations of the methodare performed by a processor of an AR device, broadly a mobile device,or a user device.

The method 600 begins in step 605 and proceeds to step 610. In step 610,the processor receives a selection of priorities between at least twovirtual environments. For example, a user of the AR device of theprocessor may participate in more than one AR environment. In otherwords, the user may be a member in more than one AR community.Therefore, the user may enter an input for the processor todifferentiate from among the different AR environment associated withthe user. In one example, the processor may receive the selection via aninput comprising a pressing of a key, an entry of a string of text, avoice command, and so forth. To illustrate, a selection of prioritiesmay specify that the user would currently like to see virtual objectsfrom both a family based AR environment and an architecture ARenvironment, but that the family based AR environment should takeprecedence in the event of a conflict. For instance, if there is a firstvirtual object of the family based AR environment and a second virtualobject of the architecture AR environment associated with the samephysical location, only the first virtual object may be presented. Inanother example, the second virtual object may be presented in a fadedmanner or in a translucent manner.

At step 620, the processor detects a physical location of the AR device.For instance, the AR device of the processor may be equipped with aglobal positioning system (GPS) component, or may be configured todetermine location via triangulation or other technique using measureddistances between the AR device and one or more access points or basestations. In one example, a near-field communication (NFC) capabilitycan be used to establish the physical proximity of an AR device to asensor or beacon. In one example, the operations of step 620 maycomprise the same or similar operations to those described above inconnection with step 430 of the method 400 and steps 520, 540, and 565of the method 500.

At step 630, the processor provides the physical location that isdetected to a server. In one example, the processor may communicate withthe server via any type of wired and/or wireless communication betweendevices over any one or more types of network.

At step 640, the processor receives virtual objects associated with thephysical location, where the virtual objects are associated withdifferent virtual environments. For instance, the AR device of theprocessor may be associated with a user who is a participant in multipleAR environments. In other words, the user is a member of more than oneAR community. As such, the processor may receive from the server severalvirtual objects, where the virtual objects relate to at least twodifferent virtual environments, but where the several virtual objectsmay be associated with the same physical location.

At step 650, the processor displays at least a first of the virtualobjects based upon the selection of priorities between the at least twovirtual environments. For example, as mentioned above, the selection ofpriorities may specify that the user would currently like to see virtualobjects from both a family based AR environment and an architecture ARenvironment, but that the family based AR environment should takeprecedence in the event of a conflict. For instance, if the processorreceives a first virtual object of the family based AR environment and asecond virtual of the architecture AR environment associated with thesame physical location, only the first virtual object may be presented.In another example, the second virtual object may be presented in afaded manner or in a translucent manner. In still other examples, thesecond virtual object may be presented in grayscale (without color),without animation (if otherwise animated), and so forth.

In one example, if a first virtual object for a first virtualenvironment and a second virtual object for the second virtualenvironment are both received at step 640, the processor may select todisplay the first virtual object, while also presenting an indicatorthat at least one other virtual object for another virtual environmentexists at the same physical location. Thus, for example, the user maywant to only see virtual objects for a single virtual environment at onetime, e.g., so that the user is not overwhelmed with too many virtualobjects from different virtual environments. However, the user may wishto be made aware of other virtual objects from other virtualenvironments that may be available so that the user can changepriorities and see the other virtual objects. The displaying of at leastthe first of the virtual objects may take various forms depending uponthe type of AR device of the processor. For instance, if the AR deviceis a smartphone, the displaying may comprise presenting an image, orimages, of the at least a first virtual object on a display screen. Inanother example, if the AR device is an AR headset, the displaying maycomprise projecting an image, or images, of the at least a first virtualobject within a field of view of the user.

At step 660, the processor receives a change in the selection ofpriorities. For example, the user may be a professional architect andmay want to share the AR device with a client to allow the client toexperience the architecture AR environment. Therefore, the user mayselect to have only virtual objects from the AR virtual environmentdisplayed, e.g., so that no virtual objects from the family-based ARenvironment will be displayed. In other words, the user may “turn off”and/or “turn on” one or more of the virtual environments as needed ordesired.

At step 670, the processor displays at least a second virtual objectbased upon the change in the selection of priorities between the twovirtual environments. In one example, the at least a second virtualobject may have been received by the processor at step 640, but was notdisplayed at step 650 based upon a previous selection of priorities.However, as a result of the change in the selection of priorities, thevirtual environment associated with the at least a second virtual objectmay now take precedence and be displayed. Depending upon the selectionof priorities, the processor may continue to display the at least afirst virtual object that is displayed at step 640, may cease displayingthe at least a first virtual object, or may display the at least a firstvirtual object in a different form, e.g., faded, translucent, etc.

Following step 670, the method 600 proceeds to step 695 where the methodends.

As such, the present disclosure provides at least one advancement in thetechnical field of augmented reality devices and networking. Thisadvancement is in addition to the traditional methods of vendor-providedaugmented reality shopping applications and the like. In particular, thepresent disclosure provides for a user to create a virtual object andassociate the virtual object with a virtual environment that is selectedfrom among a plurality of different virtual environments associated withthe user. The present disclosure further provides for displaying atleast one virtual object based upon a selection of priorities betweentwo virtual environments. The present disclosure also provides for theautomatic generating of virtual objects at locations in a virtualenvironment associated with a physical location of an AR device, e.g.,where the AR device is the first device to explore a physical locationand report imagery of the physical location to a server.

The present disclosure also provides a transformation of data, e.g.,device usage data, e.g., of a mobile device/AR device is transformedinto instructions which also cause a transformation of data, e.g., thedisplay state of one or more virtual objects. For instance, gestures,voice commands, or other inputs may be received, analyzed, anddetermined to comprise commands that may cause virtual objects to becreated, where none existed before, to become mobile, to be transformedto a different state, e.g., the displayed image of the virtual objectmay be changed, and so forth. In addition, location data of an AR deviceis also transformed into selections of virtual objects to be presentedto the AR device.

Finally, examples of the present disclosure improve the functioning ofcomputing devices, e.g., servers and mobile devices, including ARdevices. Namely, no server or mobile device is presently known toprovide for the user-selection of priorities from among differentvirtual environments/AR environments, where virtual objects fromdifferent virtual environments may be presented unaltered, suppressed(i.e., not displayed), or displayed in a different form, such as infaded form, or transparent form, depending upon the selection of theuser, and where a user may experience two or more different virtualenvironments simultaneously via the user's AR device. In addition, noserver or mobile device is presently known to provide for user-definedvirtual objects to be selectively associated by the user with a virtualenvironment selected from among a plurality of different virtualenvironments.

In addition, although not specifically specified, one or more steps,functions or operations of the respective methods 400, 500, and 600 mayinclude a storing, displaying and/or outputting step as required for aparticular application. In other words, any data, records, fields,and/or intermediate results discussed in the methods can be stored,displayed and/or outputted either on the device executing the methods400, 500, or 600, or to another device, as required for a particularapplication.

Furthermore, steps, blocks, functions or operations in FIGS. 4, 5, and 6that recite a determining operation or involve a decision do notnecessarily require that both branches of the determining operation bepracticed. In other words, one of the branches of the determiningoperation can be deemed as an optional step. Furthermore, steps, blocks,functions or operations of the above described methods can be combined,separated, and/or performed in a different order from that describedabove, without departing from the examples of the present disclosure. Inaddition, although FIGS. 4-6 illustrate the respective methods 400, 500,and 600, in one example, any one or more of the methods of FIGS. 4-6 maybe combined, or performed in coordinated manner. For instance, themethods 400 and 500 may be performed by the same processor or otherdevice(s), e.g., with the method 400 being performed prior to the steps,functions, and/or operations of the method 500, and so forth.

FIG. 7 depicts a high-level block diagram of a computing device suitablefor use in performing the functions described herein. As depicted inFIG. 7, the system 700 comprises one or more hardware processor elements702 (e.g., a central processing unit (CPU), a microprocessor, or amulti-core processor), a memory 704 (e.g., random access memory (RAM)and/or read only memory (ROM)), a module 705 for associating a virtualobject with a location, for associating a virtual object with a locationand with a virtual environment that is selected, and/or for displayingat least one virtual object based upon a selection of priorities betweentwo virtual environments, and various input/output devices 706 (e.g.,storage devices, including but not limited to, a tape drive, a floppydrive, a hard disk drive or a compact disk drive, a receiver, atransmitter, a speaker, a display, a speech synthesizer, an output port,an input port and a user input device (such as a keyboard, a keypad, amouse, a microphone and the like)). Although only one processor elementis shown, it should be noted that the computing device may employ aplurality of processor elements. Furthermore, although only onecomputing device is shown in the figure, if any one or more of themethods 400, 500, or 600 as discussed above is implemented in adistributed or parallel manner for a particular illustrative example,i.e., the steps of the method, or the entire method is implementedacross multiple or parallel computing devices, then the computing deviceof this figure is intended to represent each of those multiple computingdevices.

Furthermore, one or more hardware processors can be utilized insupporting a virtualized or shared computing environment. Thevirtualized computing environment may support one or more virtualmachines representing computers, servers, or other computing devices. Insuch virtualized virtual machines, hardware components such as hardwareprocessors and computer-readable storage devices may be virtualized orlogically represented.

The one or more hardware processors 702 can also be configured orprogrammed to cause other devices to perform one or more operations asdiscussed above. In other words, the one or more hardware processors 702may serve the function of a central controller directing other devicesto perform the one or more operations as discussed above.

It should be noted that the present disclosure can be implemented insoftware and/or in a combination of software and hardware, e.g., usingapplication specific integrated circuits (ASIC), a programmable gatearray (PGA) including a Field PGA, or a state machine deployed on ahardware device, a computing device or any other hardware equivalents,e.g., computer readable instructions pertaining to the method discussedabove can be used to configure a hardware processor to perform thesteps, functions and/or operations of the above disclosed method. In oneexample, instructions and data for the present module or process 705 forassociating a virtual object with a location, for associating a virtualobject with a location and with a virtual environment that is selected,and/or for displaying at least one virtual object based upon a selectionof priorities between two virtual environments (e.g., a software programcomprising computer-executable instructions) can be loaded into memory704 and executed by hardware processor element 702 to implement thesteps, functions or operations as discussed above in connection with theillustrative methods 400, 500, and 600. Furthermore, when a hardwareprocessor executes instructions to perform “operations”, this couldinclude the hardware processor performing the operations directly and/orfacilitating, directing, or cooperating with another hardware device orcomponent (e.g., a co-processor and the like) to perform the operations.

The processor executing the computer readable or software instructionsrelating to the above described method can be perceived as a programmedprocessor or a specialized processor. As such, the present module 705for associating a virtual object with a location, for associating avirtual object with a location and with a virtual environment that isselected, and/or for displaying at least one virtual object based upon aselection of priorities between two virtual environments (includingassociated data structures) of the present disclosure can be stored on atangible or physical (broadly non-transitory) computer-readable storagedevice or medium, e.g., volatile memory, non-volatile memory, ROMmemory, RAM memory, magnetic or optical drive, device or diskette, andthe like. Furthermore, a “tangible” computer-readable storage device ormedium comprises a physical device, a hardware device, or a device thatis discernible by the touch. More specifically, the computer-readablestorage device may comprise any physical devices that provide theability to store information such as data and/or instructions to beaccessed by a processor or a computing device such as a computer or anapplication server.

While various examples have been described above, it should beunderstood that they have been presented by way of illustration only,and not a limitation. Thus, the breadth and scope of any aspect of thepresent disclosure should not be limited by any of the above-describedexamples, but should be defined only in accordance with the followingclaims and their equivalents.

What is claimed is:
 1. A method comprising: receiving from a first userdevice, by a processor, a virtual object that is created by a user andat least one trigger condition for presenting the virtual object;obtaining, by the processor, a physical location of the first userdevice; receiving, by the processor, a selection of a first virtualenvironment for the virtual object, wherein the first virtualenvironment is selected from among a plurality of virtual environmentsassociated with the first user device; associating, by the processor,the virtual object with the physical location and with the first virtualenvironment that is selected; and presenting, by the processor, thevirtual object to a second user device associated with the first virtualenvironment when the at least one the trigger condition is encountered,wherein the at least one trigger condition comprises a condition thatthe second user device is proximate to the physical location.
 2. Themethod of claim 1, further comprising: receiving a parameter from thefirst user device for interacting with the virtual object, wherein theparameter is associated with a transformation of the virtual object inresponse to the parameter being satisfied.
 3. The method of claim 2,further comprising: receiving an input from the second user deviceproximate the physical location; determining that the input from thesecond user device satisfies the parameter; and transforming the virtualobject in accordance with the input.
 4. The method of claim 1, furthercomprising: storing the virtual object in a storage device; detectingthat a third user device associated with the virtual environment isproximate the physical location; retrieving the virtual object from thestorage device; and presenting the virtual object to the third userdevice when it is detected that the third user device is proximate thephysical location.
 5. The method of claim 4, further comprising:detecting an end condition associated with the virtual object; andremoving the virtual object from the storage device.
 6. The method ofclaim 1, further comprising: receiving, from an originating user device,a request to create the first virtual environment; and receiving, fromthe originating user device, conditions to determine a community ofusers to be associated with the first virtual environment.
 7. The methodof claim 6, further comprising: receiving data from a user device of auser in the community of users regarding an additional physicallocation; generating a plurality of virtual objects for the firstvirtual environment; and associating the plurality of virtual objectswith the additional physical location.
 8. The method of claim 7, whereinthe plurality of virtual objects that is generated is selected basedupon a theme of the first virtual environment, wherein the theme of thefirst virtual environment is selected via the request that is receivedfrom the originating user device.
 9. The method of claim 1, wherein thepresenting the virtual object to the second user device comprisestransmitting the virtual object to the second user device forpresentation via a display of the second user device.
 10. The method ofclaim 1, wherein the obtaining the physical location of the first userdevice comprises: receiving coordinate information from the first userdevice.
 11. The method of claim 1, wherein the first user device and thesecond user device comprise augmented reality devices.
 12. The method ofclaim 1, wherein the processor comprises a processor of a server,wherein the server manages the plurality of virtual environments.
 13. Anon-transitory computer-readable medium storing instructions which, whenexecuted by a processor, cause the processor to perform operations, theoperations comprising: receiving from a first user device a virtualobject that is created by a user and a trigger condition for presentingthe virtual object; obtaining a physical location of the first userdevice; receiving a selection of a first virtual environment for thevirtual object, wherein the first virtual environment is selected fromamong a plurality of virtual environments associated with the first userdevice; associating the virtual object with the physical location andwith the first virtual environment that is selected; and presenting thevirtual object to at least a second user device associated with thefirst virtual environment when the second user device is proximate thephysical location when the trigger condition is encountered.
 14. Anapparatus comprising: a processing system including at least oneprocessor; and a non-transitory computer-readable medium storinginstructions which, when executed by the processing system, cause theprocessing system to perform operations, the operations comprising:receiving from a first user device a virtual object that is created by auser and at least one trigger condition for presenting the virtualobject; obtaining a physical location of the first user device;receiving a selection of a first virtual environment for the virtualobject, wherein the first virtual environment is selected from among aplurality of virtual environments associated with the first user device;associating the virtual object with the physical location and with thefirst virtual environment that is selected; and presenting the virtualobject to a second user device associated with the first virtualenvironment when the at least one the trigger condition is encountered,wherein the at least one trigger condition comprises a condition thatthe second user device is proximate to the physical location.
 15. Theapparatus of claim 14, the operations further comprising: receiving aparameter from the first user device for interacting with the virtualobject, wherein the parameter is associated with a transformation of thevirtual object in response to the parameter being satisfied.
 16. Theapparatus of claim 15, the operations further comprising: receiving aninput from the second user device proximate the physical location;determining that the input from the second user device satisfies theparameter; and transforming the virtual object in accordance with theinput.
 17. The apparatus of claim 14, the operations further comprising:storing the virtual object in a storage device; detecting that a thirduser device associated with the virtual environment is proximate thephysical location; retrieving the virtual object from the storagedevice; and presenting the virtual object to the third user device whenit is detected that the third user device is proximate the physicallocation.
 18. The apparatus of claim 17, the operations furthercomprising: detecting an end condition associated with the virtualobject; and removing the virtual object from the storage device.
 19. Theapparatus of claim 14, the operations further comprising: receiving,from an originating user device, a request to create the first virtualenvironment; and receiving, from the originating user device, conditionsto determine a community of users to be associated with the firstvirtual environment.
 20. The apparatus of claim 19, the operationsfurther comprising: receiving data from a user device of a user in thecommunity of users regarding an additional physical location; generatinga plurality of virtual objects for the first virtual environment; andassociating the plurality of virtual objects with the additionalphysical location.